Method and apparatus for MAP decoding of binary hamming codes and related error correction codes

ABSTRACT

A method and apparatus are disclosed for MAP decoding of signals encoded using error correction codes to make maximum probability decisions about each transmitted bit. A disclosed MAP decoding algorithm extends the work of Hartman and Rudolph and exploits properties of Hamming error correction codes to provide a decoding algorithm having a complexity that is proportional to n log n for Hamming codes. The invention computes a difference, ρ, of the probabilities the that transmitted symbol was zero and one based on characteristics of the channel and then determines the product of the ρ l  values corresponding to non-zero positions of codewords of the dual code using real vector and F 2 [   2 ]-vector fast Walsh-Hadamard transforms. The invention also processes all positions of all codewords to determine a sum for each position that indicates the reliability that a received bit is a given value for a given position using the real vector fast Walsh-Hadamard transforms.

FIELD OF THE INVENTION

[0001] The present invention relates to mechanisms for maximum aposteriori (MAP) decoding of signals encoded using error correctioncodes, and, more particularly, to MAP decoding of signals encoded usingbinary Hamming codes and related error correction codes.

BACKGROUND OF THE INVENTION

[0002] Error correction codes are often employed in communicationsystems to provide increased resilience to channel noise. Generally,error correction encoding techniques typically employ convolutional,block or concatenated coding of the data before the signal is modulatedso that errors introduced by noise and interference on the channel maybe corrected. One popular family of linear low rate error correctioncodes having large minimum distances is first order Reed-Muller codes.Each family of error correction codes has a dual code. The dual code forbinary Reed-Muller codes are the binary Hamming codes.

[0003] The received signal, which is typically corrupted by the noiseand interference on the channel, must be decoded at the receiver.Typically, maximum a posteriori (MAP) decoding techniques are applied todecode signals encoded using error correction codes to make maximumprobability decisions about each transmitted bit. For a detaileddiscussion of Hamming codes and the decoding thereof, see, for example,T. Kasami et al., “On the Optimum Bit Orders With Respect to the StateComplexity of Trellis Diagrams for Binary Linear Codes,” IEEE Trans.Inf. Theory, vol. IT-39, 242-45 (January, 1993) or T. Kasami et al, “OnComplexity of Trellis Structure of Linear Block Codes,” IEEE Trans. Inf.Theory, vol. IT-39, 1057-64 (January, 1993), incorporated by referenceherein.

[0004] One particular implementation of the MAP decoding algorithm,commonly referred to as the BCJR algorithm, was proposed in L. R. Bahl,J. Cocke, F. Jelinek and J. Raviv, “Optimal Decoding of Linear Codes forMinimizing Symbol Error Rate”, IEEE Trans. Inform. Theory, V. IT-20,284-287 (March, 1974), incorporated by reference herein. The BCJRalgorithm is a symbol-by-symbol decoder based on a trellisrepresentation of a code. The BCJR algorithm for binary Hamming codeshas a complexity that is proportional to n², where n is the code length.A need exists for a method and apparatus for decoding Hamming andextended Hamming codes having reduced complexity.

SUMMARY OF THE INVENTION

[0005] Generally, a method and apparatus are disclosed for MAP decodingof signals encoded using error correction codes to make maximumprobability decisions about each transmitted bit. The disclosed MAPdecoding algorithm exploits properties of Hamming error correction codesto provide a decoding algorithm with significantly reduced complexity.While conventional decoding algorithms for binary Hamming codes, such asthe Hartman-Rudolph algorithm, have a complexity that is proportional ton³, where n is the code length and the BCJR algorithm has complexityproportional to n², the disclosed decoding algorithm has a complexitythat is proportional to n log n for Hamming and extended Hamming codes.

[0006] The disclosed MAP decoding algorithm determines the probabilitythat a given symbol is each possible value and selects a value for eachsymbol based on the value having the maximum probability. The disclosedMAP decoding algorithm extends the work of Hartman and Rudolph. A firstportion of the Hartman-Rudolph decoding algorithm computes a difference,ρ, in the probability of receiving a binary zero and binary one based oncharacteristics of the channel and received signal and then, for eachcodeword of the dual code, determines the product of the ρ_(l) valuescorresponding to non-zero positions of codewords of the dual code, in aknown manner. As used herein, the symbol “ρ” indicates the set of ρ_(l)values for each of the l positions of a codeword. According to onefeature of the invention, a more efficient technique for computing theproduct of the ρ values corresponding to non-zero positions of codewordsof the dual code is provided. Generally, the present inventionrecognizes that in the case of Hamming codes, a real vector and aspecially designed F₂[

₂]-vector fast Walsh-Hadamard transform can be used to more efficientlycompute the product of the ρ_(l) values corresponding to non-zeropositions of codewords.

[0007] A second portion of the conventional Hartman-Rudolph decodingalgorithm processes all positions to determine a sum of modifiedproducts of ρ values for each position whose sign indicates the mostprobable value of a transmitted symbol for a given position. Generally,the second portion of the Hartman-Rudolph decoding algorithm goesthrough each position of the code and modifies the products of the ρ_(l)values (computed by the first aspect) and then sums the modifiedproducts of ρ_(l) values. For a given position of each dual codeword,the initial product of ρ_(l) values (computed by the first aspect) is(i) divided by the ρ_(l) value for the current position if the dualcodeword has a binary one (1) in the current position, and (ii)multiplied by the ρ_(l) value for the current position if the dualcodeword has a binary zero (0) in the current position. According toanother feature of the invention, a more efficient technique forcomputing the sum of modified products of the ρ_(l) values for eachposition is provided. Generally, the present invention recognizes thatin the case of Hamming codes, the real vector fast Walsh-Hadamardtransforms can be used to more efficiently compute the sum of modifiedproducts of ρ_(l) values for each position.

[0008] A more complete understanding of the present invention, as wellas further features and advantages of the present invention, will beobtained by reference to the following detailed description anddrawings.

BRIEF DESCRIPTION OF THE DRAWINGS

[0009]FIG. 1 illustrates a communication system in which the presentinvention may be employed;

[0010]FIGS. 2A and 2B, collectively, are a flow chart describing anexemplary implementation of a MAP decoding algorithm of FIG. 1particularly suited for decoding binary extended Hamming codes; and

[0011]FIG. 3 is a flow chart describing an exemplary implementation of aMAP decoding algorithm of FIG. 1 particularly suited for decoding binaryHamming codes.

DETAILED DESCRIPTION

[0012]FIG. 1 illustrates a communication system 100 in which the presentinvention may be employed. As shown in FIG. 1, the communication system100 includes an encoder 110, a channel 120, and a maximum a posteriori(MAP) decoder 150. The encoder 110 employs error correction encoding toprovide increased resilience to noise on the channel 120. In particular,the exemplary encoder 110 employs extended Hamming codes or Hammingcodes. As discussed hereinafter, the MAP decoder 150 employs a MAPdecoding algorithm 200, discussed below in conjunction with FIG. 2,incorporating features of the present invention to make maximumprobability decisions for all values of each transmitted symbol.

[0013] The present invention recognizes that for extended Hamming codesand Hamming codes, the complexity of conventional MAP decodingalgorithms can be significantly reduced. As discussed more fully below,the disclosed MAP decoding algorithm 200 for Hamming codes has acomplexity that is proportional to n log₂ n. While the present inventionis illustrated herein using exemplary Hamming codes, the presentinvention may be applied to any error correction code for which the dualof the code may be represented as a product of sparse matrices, such asReed-Muller codes. For a detailed discussion of a system and method fordecoding Reed-Muller codes, see, for example, U.S. patent applicationSer. No. 10/112,574, filed Mar. 29, 2002, entitled “Method and Apparatusfor MAP Decoding of First-Order Reed-Muller Codes and Related ErrorCorrection Codes,” incorporated by reference herein.

Conventional MAP Decoding of a Linear Code

[0014] Let

be the Galois field of size q (i.e., a finite field of q elements) andlet C be an [n,k] linear code over

. It is assumed that codewords of C are transmitted through a memorylesschannel 120. Let Q be an output sampling space, either finite orinfinite, of the channel 120. In the case of finite Q, it is assumedthat conditional probabilities Pr(y|α) of receiving symbol yεQ under thecondition that symbol αε

has been transmitted are known. If Q is infinite, then y is a continuousrandom variable whose density function, say ƒ_(α)(y), is defined by atransmitted symbol αε

For instance, if a binary code with binary modulation is used in achannel 120 with white additive Gaussian noise then we have two densityfunctions:${f_{0}(y)} = {{\frac{1}{\sqrt{2\quad \pi \quad \sigma}}^{- \frac{{({x - 1})}^{2}}{2\quad \sigma^{2}}}\quad {and}\quad {f_{1}(y)}} = {\frac{1}{\sqrt{2\quad \pi \quad \sigma}}^{- \frac{{({x + 1})}^{2}}{2\quad \sigma^{2}}}}}$

[0015] where $\sigma = \frac{n}{2k\quad \vartheta}$

[0016] and θ is the signal to noise ratio. It is assumed that functionsƒ_(α)(y) are known for all αεF_(q). Since a memoryless channel isassumed, the conditional probability of receiving a vector yεQ^(n) underthe condition that a vector cεF_(q) ^(n) has been transmitted, can bewritten as the following product: $\begin{matrix}{{\Pr \left( \underset{\_}{y} \middle| \underset{\_}{c} \right)} = {\prod\limits_{j = 0}^{n - 1}{{\Pr \left( y_{j} \middle| c_{j} \right)}.}}} & (1)\end{matrix}$

[0017] It is also assumed that all codewords have the same probabilityto be transmitted and therefore this probability equals$\frac{1}{q^{k}}.$

[0018] It is assumed that a vector c=(c₀, c₁, . . . , c_(n−1))εC istransmitted and a vector yεQ^(n) is received. The goal is to determinewhat was the j-th transmitted symbol. To do this, the conditionalprobabilities Pr(c_(j)=α|y) are estimated for all αε

and the maximum one is selected.

[0019] Let C_(j) ^((α))={c=(c₀, c₁, . . . , c_(n−1))εC:c_(j)=α}, i.e.,C_(j) ^((α)) is the set of all codewords whose j-th symbol is α. In thecase of finite Q, using Bayes rule and equation (1), the conditionalprobabilities can be expressed as follows: $\begin{matrix}\begin{matrix}{{\Pr \left( {c_{j} = \left. \alpha \middle| \underset{\_}{y} \right.} \right)} = {\sum\limits_{\underset{\_}{b} \in C_{j}^{(\alpha)}}{\Pr \left( {\underset{\_}{c} = \left. \underset{\_}{b} \middle| \underset{\_}{y} \right.} \right)}}} \\{= {\sum\limits_{\underset{\_}{b} \in C_{j}^{(\alpha)}}{\frac{\Pr \left( \underset{\_}{y} \middle| \underset{\_}{b} \right)}{\Pr \left( \underset{\_}{y} \right)}{\Pr \left( \underset{\_}{b} \right)}}}} \\{= {\frac{1}{q^{k}{\Pr \left( \underset{\_}{y} \right)}}{\sum\limits_{\underset{\_}{b} \in C^{(\alpha)}}{\prod\limits_{l = 0}^{n - 1}{{\Pr \left( y_{l} \middle| b_{l} \right)}.}}}}}\end{matrix} & (2)\end{matrix}$

[0020] Using similar arguments, in the case of infinite Q, theconditional probabilities can be expressed as follows: $\begin{matrix}{{\Pr \left( {c_{j} = \left. \alpha \middle| \underset{\_}{y} \right.} \right)} = {\frac{1}{q^{k}{\Pr \left( \underset{\_}{y} \right)}}{\sum\limits_{\underset{\_}{b} \in C_{j}^{(\alpha)}}{\prod\limits_{l = 0}^{n - 1}{{f_{b_{l}}\left( y_{l} \right)}.}}}}} & (3)\end{matrix}$

[0021] The denominator of equations (2) and (3) is the same for αε

Therefore, for MAP decoding, it is enough to estimate only the sum ofproducts of Pr(y_(i) ^(|b) _(j)) or ƒ_(b) _(j) (y₁) for different αε

₂ and to select the maximum one.

[0022] Hereinafter, it is assumed that Q is finite and the conditionalprobabilities Pr(y_(i)|α) will be employed. In the case of infinite Q,one has to replace the conditional probabilities with density functionsƒ_(α)(y_(j)).

Binary Hamming Codes

[0023] In what follows we will denote by ⊕ summation by mod 2. Let C bean [n,k] linear code over

₂, and let C^(⊥) be the dual of C. It is assumed that code words ofC^(⊥) are enumerated and denoted by c′, i.e., c_(q)′ is the j-th elementof the i-th codeword of C¹⁹⁵. In what follows we will call code words ofC^(⊥) dual code words.

[0024] C. Hartman and L. Rudolph developed an algorithm for the MAPdecoding of a linear code using its dual code. See, R. P. Hartman and L.D. Rudolph, “An Optimum Symbol-by-Symbol Decoding Rule for LinearCodes,” IEEE Trans. Inf. Theory, vol. IT-22, 514-17 (September 1976),incorporated by reference herein. In particular, Hartman and Rudolphproved the following theorem:

[0025] Theorem 1: $\begin{matrix}{{{\Pr \left( {c_{j} = \left. s \middle| \underset{\_}{y} \right.} \right)} = {\frac{1}{2^{n + 1}{\Pr \left( \underset{\_}{y} \right)}}{A_{j}(s)}}},{s \in \left\{ {0,1} \right\}},} & (4) \\{{where}:} & \quad \\{{A_{j}(s)} = {\sum\limits_{t = 0}^{1}{\left( {- 1} \right)^{t}{\sum\limits_{i = 0}^{2^{n - k} - 1}{\prod\limits_{l = 0}^{n - 1}{\left\lbrack {{\Pr \left( y_{l} \middle| 0 \right)} + {\left( {- 1} \right)^{- {({c_{ii}^{\prime} \oplus {t\quad \delta_{jl}}})}}{\Pr \left( y_{l} \middle| 1 \right)}}} \right\rbrack.}}}}}} & (5)\end{matrix}$

[0026] Generally, Hartman and Rudolph provided an algorithm that usesthe dual code to decode a given code.

[0027] Let: ψ_(j) = Pr (y_(j)|1)/Pr (y_(j)|0)  and$\rho_{j} = {\frac{1 - {{\Pr \left( y_{j} \middle| 1 \right)}/{\Pr \left( y_{j} \middle| 0 \right)}}}{1 + {{\Pr \left( y_{j} \middle| 1 \right)}/{\Pr \left( y_{j} \middle| 0 \right)}}} = {{\Pr \left( {c_{j} = \left. 0 \middle| y_{j} \right.} \right)} - {{\Pr \left( {c_{j} = \left. 1 \middle| y_{j} \right.} \right)}.}}}$

[0028] It was noted by Hartman and Rudolph that dividing equation (5) by$\prod\limits_{j = 0}^{n - 1}{\Pr \left( y_{j} \middle| 0 \right)}$

[0029] and further by ${{\prod\limits_{j = 0}^{n - 1}1} + \psi_{j}},$

[0030] and using identity, as follows:${\frac{1 + {\psi_{j}\left( {- 1} \right)}^{{- c_{ij}^{\prime}} \oplus \delta_{ij}}}{1 + \psi_{j}} = \frac{\left( {1 - \psi_{j}} \right)^{{- c_{ij}^{\prime}} \oplus \delta_{ij}}}{1 + \psi_{j}}},$

[0031] the following expression is obtained: $\begin{matrix}{{{A_{j}(0)} - {A_{j}(1)}} = {\lambda \quad {\sum\limits_{i = 0}^{2^{n - k} - 1}{\prod\limits_{l = 0}^{n - 1}{\rho_{l}^{c_{il}^{\prime} \oplus \delta_{jl}}.}}}}} & (6)\end{matrix}$

[0032] Similarly, to evaluate the sum of probabilities, which isproportional to the sum of A_(j)(0) and A_(j)(1), the following isobtained: $\begin{matrix}{{{A_{j}(0)} + {A_{j}(1)}} = {\lambda \quad {\sum\limits_{i = 0}^{2^{n - k} - 1}{\prod\limits_{l = 0}^{n - 1}\rho_{l}^{c_{il}^{\prime}}}}}} & (7)\end{matrix}$

[0033] From equations (6) and (7), it follows that $\begin{matrix}\begin{matrix}{{{\Pr \left( {c_{j} = \left. 0 \middle| \underset{\_}{y} \right.} \right)} - {\Pr \left( {c_{j} = \left. 1 \middle| \underset{\_}{y} \right.} \right)}} = \frac{{\Pr \left( {c_{j} = \left. 0 \middle| \underset{\_}{y} \right.} \right)} - {\Pr \left( {c_{j} = \left. 1 \middle| \underset{\_}{y} \right.} \right)}}{{\Pr \left( {c_{j} = \left. 0 \middle| \underset{\_}{y} \right.} \right)} + {\Pr \left( {c_{j} = \left. 1 \middle| \underset{\_}{y} \right.} \right)}}} \\{= {\frac{\sum\limits_{i = 0}^{2^{n - k} - 1}{\prod\limits_{l}\rho_{l}^{c_{il}^{\prime} \oplus \delta_{jl}}}}{\quad {\sum\limits_{i = 0}^{2^{n - k} - 1}{\prod\limits_{l}\rho_{l}^{c_{il}^{\prime}}}}}.}}\end{matrix} & (8)\end{matrix}$

[0034] It is noted that the sign of the difference in probabilities (8)can be evaluated to determine if the received data is a binary zero (0)or binary one (1), and the magnitude of the difference in probabilitiescan be evaluated for an indication of the reliability. The presentinvention provides techniques for computing equations 6 and 7efficiently for Hamming codes. The numerator and denominator in Equation8 can be considered as a sum of products of the ρ_(i) values.

[0035] Initially, a first portion of the Hartman-Rudolph decodingalgorithm determines the product of the ρ_(i) values corresponding tonon-zero positions of codewords of the dual code. According to oneaspect of the present invention, a more efficient technique forcomputing the product of the ρ_(i) values corresponding to non-zeropositions of codewords of the dual code is provided. Generally, thepresent invention recognizes that in the case of Hamming codes, the realvector and specially designed F₂[

]-vector fast Walsh-Hadamard transforms can be used to more efficientlycompute the product of the ρ_(i) values corresponding to non-zeropositions of codewords.

[0036] Thereafter, a second portion of the Hartman-Rudolph decodingalgorithm processes all positions to determine a sum of modifiedproducts of ρ values for each position whose sign indicates the mostprobable value of a transmitted symbol on a given position. Generally,the second portion of the Hartman-Rudolph decoding algorithm goesthrough each position of the code and modifies the products of the ρ_(l)values (computed by the first aspect) and then sums the modifiedproducts of ρ_(l) values. For a given position of each dual codeword,the initial product of ρ_(l) values (computed by the first aspect) is(i) divided by the ρ_(l) value for the current position if the dualcodeword has a binary one (1) in the current position, and (ii)multiplied by the ρ_(l) value for the current position if the dualcodeword has a binary zero (0) in the current position.

[0037] According to another aspect of the present invention, a moreefficient technique for computing the sum of modified products of ρ_(l)values for each position is provided. Generally, the present inventionrecognizes that in the case of Hamming codes, the real vector fastWalsh-Hadamard transform can be used to more efficiently compute the sumof modified products of ρ_(l) values for each position.

[0038] The Hamming codes, H_(m), and extended Hamming codes, Ĥ_(m), are[2^(m)-1, 2^(m)-1-m, 3] and [2^(m), 2^(m)-m-1, 4], respectively. Theyare optimal, i.e., they have the largest possible minimum distance amongall codes with the same length and size. The Hamming code H_(m) can bedefined as the code whose parity check matrix consists of all nonzerobinary m-tuples ordered lexicographically. The extended Hamming code Ĥis the code whose parity check matrix is constructed from the paritycheck matrix of H_(m) by adding to the all-zero m-tuple and then addingthe all-one row. For instance, if m equals 3, then parity check matricesof H_(m) and Ĥ_(m) are as follows:${H_{\mathcal{H}_{m}} = {{\begin{bmatrix}0 & 0 & 0 & 1 & 1 & 1 & 1 \\0 & 1 & 1 & 0 & 0 & 1 & 1 \\1 & 0 & 1 & 0 & 1 & 0 & 1\end{bmatrix}\quad {and}\quad H_{{\hat{\mathcal{H}}}_{m}}} = \begin{bmatrix}1 & 1 & 1 & 1 & 1 & 1 & 1 & 1 \\0 & 0 & 0 & 0 & 1 & 1 & 1 & 1 \\0 & 0 & 1 & 1 & 0 & 0 & 1 & 1 \\0 & 1 & 0 & 1 & 0 & 1 & 0 & 1\end{bmatrix}}},$

[0039] respectively. The dual of the extended Hamming code is the firstorder Reed-Muller code RM (l,m) and the dual of the Hamming code is socalled the simplex code.

[0040] Consider the meaning of expression (8) on the example of codes H₃and Ĥ₃. The set of code words of the code RM₃ and S₃, that are dualcodes of Ĥ₃ and H₃, are positions: 0 1 2 3 4 5 6 7 1 2 3 4 5 6 7codewords: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 1 0 1 1 0 1 0 1 0 1 00 1 1 0 0 1 1 0 1 1 0 0 1 1 0 1 1 0 0 1 1 0 1 1 0 0 1 1 0 0 0 0 0 1 1 11 0 0 0 1 1 1 1 0 1 0 1 1 0 1 0 1 0 1 1 0 1 0 0 0 1 1 1 1 0 0 0 1 1 1 10 0 0 1 1 0 1 0 0 1 and 1 1 0 1 0 0 1 1 1 1 1 1 1 1 1 1 0 1 0 1 0 1 0 11 0 0 1 1 0 0 1 0 0 1 1 0 0 1 1 1 1 1 0 0 0 0 1 0 1 0 0 1 0 1 1 1 0 0 00 1 1 1 0 0 1 0 1 1 0

[0041] respectively. It is convenient to enumerate positions from 0 to 7for Ĥ₃ code and from 1 to 7 for H₃.

[0042] Consider the first positions for Ĥ₃ and H₃. Then, according toexpression (8) for Ĥ₃, the following expression is obtained:${{\Pr \left( {c_{1} = \left. 0 \middle| \underset{\_}{y} \right.} \right)} - {\Pr \left( {c_{1} = \left| \underset{\_}{y} \right.} \right)}} = {\quad{\frac{\quad{\rho_{1} + {\rho_{3}\rho_{5}\rho_{7}} + {\rho_{1}\rho_{2}\rho_{3}\rho_{6}\rho_{7}} + {\rho_{2}\rho_{5}\rho_{6}} + {\rho_{1}\rho_{4}\rho_{5}\rho_{6}\rho_{7}} + {\rho_{3}\rho_{4}\rho_{6}} + {\rho_{1}\rho_{2}\rho_{3}\rho_{4}\rho_{5}} + {\rho_{2}\rho_{4}\rho_{7}} +}}{\quad{1 + {\rho_{1}\rho_{3}\rho_{5}\rho_{7}} + {\rho_{2}\rho_{3}\rho_{6}\rho_{7}} + {\rho_{1}\rho_{2}\rho_{5}\rho_{6}} + {\rho_{4}\rho_{5}\rho_{6}\rho_{7}} + {\rho_{1}\rho_{3}\rho_{4}\rho_{6}} + {\rho_{2}\rho_{3}\rho_{4}\rho_{5}} + {\rho_{1}\rho_{2}\rho_{4}\rho_{7}} + {\rho_{0}\rho_{1}\rho_{2}\rho_{3}\rho_{4}\rho_{5}\rho_{6}\rho_{7}} + {\rho_{0}\rho_{1}\rho_{2}\rho_{4}\rho_{6}} + {\rho_{0}\rho_{4}\rho_{5}} + {\rho_{0}\rho_{1}\rho_{3}\rho_{4}\rho_{7}} + {\rho_{0}\rho_{2}\rho_{3}} + {\rho_{0}\rho_{1}\rho_{2}\rho_{5}\rho_{7}} + {\rho_{0}\rho_{1}\rho_{2}\rho_{3}\rho_{4}\rho_{5}\rho_{6}\rho_{7}} + {\rho_{0}\rho_{2}\rho_{4}\rho_{6}} + {\rho_{0}\rho_{1}\rho_{4}\rho_{5}} + {p_{0}\rho_{3}\rho_{4}\rho_{7}} + {\rho_{0}\rho_{1}\rho_{2}\rho_{3}} + {\rho_{0}\rho_{2}\rho_{5}\rho_{7}} + {\rho_{0}\rho_{6}\rho_{7}} + {\rho_{0}\rho_{1}\rho_{3}\rho_{5}\rho_{6}} + {\rho_{0}\rho_{1}\rho_{6}\rho_{7}} + {\rho_{0}\rho_{3}\rho_{5}{\rho_{6}.}}}}.}}$

[0043] For H₃, the following expression is obtained:${{\Pr \left( {c_{1} = \left. 0 \middle| r \right.} \right)} - {\Pr \left( {c_{1} = \left| \underset{\_}{r} \right.} \right)}} = {\frac{\quad{\rho_{1} + {\rho_{3}\rho_{5}\rho_{7}} + {\rho_{1}\rho_{2}\rho_{3}\rho_{6}\rho_{7}} + {\rho_{2}\rho_{5}\rho_{6}} + {\rho_{1}\rho_{4}\rho_{5}\rho_{6}\rho_{7}} + {\rho_{3}\rho_{4}\rho_{6}} + {\rho_{1}\rho_{2}\rho_{3}\rho_{4}\rho_{5}} + {\rho_{2}\rho_{4}\rho_{7}}}}{\quad{1 + {\rho_{1}\rho_{3}\rho_{5}\rho_{7}} + {\rho_{2}\rho_{3}\rho_{6}\rho_{7}} + {\rho_{1}\rho_{2}\rho_{5}\rho_{6}} + {\rho_{4}\rho_{5}\rho_{6}\rho_{7}} + {\rho_{1}\rho_{3}\rho_{4}\rho_{6}} + {\rho_{2}\rho_{3}\rho_{4}\rho_{5}} + {\rho_{1}\rho_{2}\rho_{4}\rho_{7}}}}.}$

[0044] Let(δ₀⁽⁰⁾, δ₁⁽⁰⁾, …  , δ_(n − 1)⁽⁰⁾; δ₀⁽¹⁾, δ₁⁽¹⁾, …  , δ_(n − 1)⁽¹⁾)  and  (β₀⁽⁰⁾, β₁⁽⁰⁾, ⋯  , β_(n − 1)⁽⁰⁾; β₀⁽¹⁾, β₁⁽¹⁾, …  , β_(n − 1)⁽¹⁾)

[0045] be binary vectors. The F₂[

]-vector fast Walsh-Hadamard type transform, discussed below, may beexpressed as follows:(δ₀⁽⁰⁾, δ₁⁽⁰⁾, …  , δ_(n − 1)⁽⁰⁾; δ₀⁽¹⁾, δ₁⁽¹⁾, …  , δ_(n − 1)⁽¹⁾) = FWH_(ℱ₂[₂])  (β₀⁽⁰⁾, β₁⁽⁰⁾, ⋯  , β_(n − 1)⁽⁰⁾; β₀⁽¹⁾, β₁⁽¹⁾, …  , β_(n − 1)⁽¹⁾):

[0046] 1. Perform steps 2 and 3 m times

[0047] 2. For j from 0 to n/2−1 compute

[0048] δ_(j) ⁽⁰⁾=β_(2j) ⁽⁰⁾⊕β_(2j+1) ⁽⁰⁾; δ_(j) ⁽¹⁾=β_(2j) ⁽¹⁾⊕β_(2j+1)⁽¹⁾;

[0049] Sδ_(n/2+j) ⁽⁰⁾=β_(2j) ⁽⁰⁾⊕β_(2j+1) ⁽¹⁾; δ_(n/2+j) ⁽⁰⁾=β_(2j)^((1) ⊕β) _(2j+1) ⁽⁰⁾;

[0050] 3. Assign β_(j) ⁽⁰⁾=δ_(j) ⁽⁰⁾ and β_(j) ⁽¹⁾=δ_(j) ⁽¹⁾, j=0, . . ., n−1;

[0051] 4. The end.

[0052] For a more detailed discussion of the Walsh-Hadamard typetransform, see, for example, I. J. Good, “The Interaction Algorithm andPractical Fourier Analysis,” J. Royal Stat. Soc., Vol. B-20, 361-372(1958); and R. R. Green, “A Serial Orthogonal Decoder,” JPL SpacePrograms Summary, Vol. 37-39-IV, 247-256 (1966), incorporated byreference herein.

[0053] Map Decoding Algorithm for Extended Hamming Codes, Ĥ_(m)

[0054]FIG. 2 is a flow chart describing an exemplary implementation ofthe MAP decoding algorithm 200 incorporating features of the presentinvention. It is noted that the exemplary MAP decoding algorithm 200uses the sum of logarithms of probabilities (since the conventional realvector fast Walsh-Hadamard transform is defined for sums anddifferences), as opposed to an equivalent product of probabilities, aswould be apparent to a person of ordinary skill in the art. Aspreviously indicated, the present invention provides a more efficientimplementation of the Hartman-Rudolph decoding algorithm for Hammingcodes.

[0055] As discussed hereinafter, a first portion of the MAP decodingalgorithm 200 (steps 210 through 270) determines the product of theρ_(l) values corresponding to non-zero positions of codewords of thedual code. As shown in FIG. 2, the MAP decoding algorithm 200 initiallycomputes on step 210, the difference, ρ, of the probabilities thattransmitted symbol c_(j) was zero and one based on characteristics ofthe channel and conditional on the j-th symbol y_(j) received from thechannel, as follows:${\rho_{j} = {\frac{1 - \frac{\Pr \left( y_{j} \middle| 1 \right)}{\Pr\left( y_{j} \middle| 0 \right.}}{1 + \frac{\Pr \left( y_{j} \middle| 1 \right)}{\Pr\left( y_{j} \middle| 0 \right.}} = {{\Pr \left( {c_{j} = \left. 0 \middle| y_{j} \right.} \right)} - {\Pr \left( {c_{j} = \left. 1 \middle| y_{j} \right.} \right)}}}},{j = 0},\ldots \quad,{n - 1.}$

[0056] Thereafter, the natural log of each ρ is computed during step 220to permit the efficient computation of the sum of logarithms ofprobabilities, as opposed to an equivalent product of probabilities, asfollows:

τ_(j)=ln |ρ_(j) |,j=0, . . . ,n−1;

[0057] Since the polarity (+/−) of each of the probability differencevalues, ρ, was masked by the absolute value employed during step 220,the following β values are computed during step 230 to maintain thepolarity information: $\beta_{j}^{0} = \left\{ {{{\begin{matrix}{0,} & {{{{if}\quad \rho_{j}} \geq 0},} \\{1,} & {{{{if}\quad \rho_{j}} < 0},}\end{matrix}{and}\quad \beta_{j}^{(1)}} = 0},{j = 0},\ldots \quad,{n - 1.}} \right.$

[0058] The real vector Walsh-Hadamard transform is applied to the τ(magnitude) values during step 240 to find the sum of logs of ρ values,as follows:

(s ₀ , s ₁ , . . . ,s _(n−1))=FWH

(τ₀,τ₁, . . . ,τ_(n−1)).

[0059] The results of the real vector Walsh-Hadamard transform are thenprocessed during step 250 to compute:${t_{i}^{(0)} = {{\frac{s_{0} + s_{1}}{2}\quad {and}\quad t_{i}^{(1)}} = \frac{s_{0} - s_{1}}{2}}},{i = 0},\ldots \quad,{n - 1.}$

[0060] (t_(i) ⁽⁰⁾ is the sum over all τ_(j) values, corresponding tonon-zero positions of the n+i-th dual codeword and t_(i) ⁽¹⁾ is the sumover all τ_(j) values, corresponding to non-zero positions of the i-thdual codeword).

[0061] Since the exemplary MAP decoding algorithm 200 employs sums oflogarithms of probabilities, as opposed to an equivalent product ofprobabilities, exponentiation is performed during step 260, to obtainthe product of ρ corresponding to non-zero positions for all dualcodewords, as follows:

h _(i) ⁽⁰⁾ =e ^(t) ^(_(l)) ⁽⁰⁾ and h_(i) ^((1)=(e) ^(t) ^(_(l)) ⁽¹⁾,i=0, . . . ,n−1.

[0062] Each h value is a product of the absolute value of ρ valuescorresponding non-zero entries for all codewords of first orderReed-Muller code. At this point, the MAP decoding algorithm 200 hasproducts of absolute values. To prepare to reintroduce the polarityinformation and obtain the δ_(j) values, the specially designed F₂[

]-vector Walsh-Hadamard transform is applied during step 265 to the β(polarity) values, as follows:(δ₀⁽⁰⁾, δ₁⁽⁰⁾, …  , δ_(n − 1)⁽⁰⁾; δ₀⁽¹⁾, δ₁⁽¹⁾, …  , δ_(n − 1)⁽¹⁾) = FWH_(ℱ₂[ℤ₂])  (β₀⁽⁰⁾, β₁⁽⁰⁾, …  , β_(n − 1)⁽⁰⁾; β₀⁽¹⁾, β₁⁽¹⁾, …  , β_(n − 1)⁽¹⁾).

[0063] The polarity of the probability difference values is thenreintroduced during step 270, as follows:$h_{i}^{0} = \left\{ {{\begin{matrix}{h_{i}^{(0)},} & {{{{if}\quad \delta_{i}^{(0)}} = 0},} \\{{- h_{i}^{(0)}},} & {{{{if}\quad \delta_{i}^{(0)}} = 1},}\end{matrix}{and}\quad h_{i}^{(1)}} = \left\{ {{{\begin{matrix}{h_{i}^{(1)},} & {{{{if}\quad \delta_{i}^{(1)}} = 0},} \\{{- h_{i}^{(1)}},} & {{{{if}\quad \delta_{i}^{(1)}} = 1},}\end{matrix}\quad i} = 0},\ldots \quad,{n - 1.}} \right.} \right.$

[0064] A second portion of the MAP decoding algorithm 200 (steps 275through 290) processes all positions of all dual codewords to determinea sum for each position that indicates the reliability that a receivedbit is a given value for a given position. Generally, the second portionof the MAP decoding algorithm 200 goes through each position of thecodes and modifies the product of the ρ_(l) values (computed by thefirst aspect) and then sums the modified product of ρ_(l) values. For agiven position of each dual codeword, the initial product of ρ_(l)values (computed by the first aspect) is (i) divided by the ρ_(l) valuefor the current position if the dual codeword has a binary one (1) inthe current position, and (ii) multiplied by the ρ_(l) value for thecurrent position if the dual codeword has a binary zero (0) in thecurrent position. For example, if the dual codeword is “1100,” theproduct of ρ_(l) values computed by the first portion of the algorithmis ρ₁ρ₂ and the modified product of ρ_(l) values for the codeword forthe first position would be ρ₁ρ₂/ρ_(l). Similarly, if the codeword is“0110,” the product of ρ_(l) values computed by the first portion of thealgorithm is ρ₂ρ₃ and the modified product of ρ_(l) values for thecodeword for the first position would be ρ₂ρ₃×ρ₁.

[0065] In preparation for another real vector Walsh-Hadamard transform,the difference between h values is obtained during step 275, as follows:

x _(i) =h _(i) ⁽⁰⁾ −h _(i) ⁽¹⁾ ,i=0, . . . ,n−1.

[0066] and q is computed during step 280 to find the sum of all hvalues, as follows:$q = {{\sum\limits_{i = 0}^{n - 1}\quad h_{i}^{(0)}} + {h_{i}^{(1)}.}}$

[0067] The real vector Walsh-Hadamard transform is applied during step285, as follows:

(r _(0,) r ₁ , . . . ,r _(n−1))=FWH

(x _(0,) x ₁ , . . . ,x _(n−1)).

[0068] The dual codewords are conceptually divided into two groups basedon the binary value of the current position of each dual codeword, andthe following values are computed during step 290:${w_{j}^{(0)} = {{\frac{q - r_{j}}{2}\quad {and}\quad w_{j}^{(1)}} = \frac{q + r_{j}}{2}}},{j = 0},\ldots \quad,{n - 1.}$

[0069] where w_(j) ⁽⁰⁾ and w_(j) ⁽¹⁾ are the sum of products of p_(l)values corresponding to non-zero positions of dual codewords with abinary zero (0) and a binary one (1) on the j-th position, respectively.Finally, a decision is made about the received bit during step 295, asfollows:${z_{j} = \frac{{w_{j}^{(0)}\rho_{j}} + \frac{w_{j}^{(1)}}{\rho_{j}}}{w_{j}^{(0)} + w_{j}^{(1)}}},{j = 0},\ldots \quad,{n - 1.}$

[0070] It is noted that the first term in the numerator multiplies theinitial product of ρ_(l) values (computed by the first aspect) by theρ_(l) value for the current position (if the codeword has a binary zero(0) in the current position) and the second term in the numeratordivides the initial product of ρ_(l) values (computed by the firstaspect) by the ρ_(l) value for the current position (if the codeword hasa binary one (1) in the current position). Thus, w_(j) ⁽⁰⁾ρ_(j) andw_(j) ⁽¹⁾/ρ_(j) are sums of modified products of ρ values. This allowsavoiding computations of modified products for all dual cadewords onstep 295, thus contributing to the efficiency gains of the presentinvention.

[0071] The following discussion establishes that the MAP decodingalgorithm 200 actually computes equation (8). Let I_(l) ⁰ and I_(l) ⁽¹⁾be the sets of positions where the i-th codeword of RM (l,m) has zerosand ones respectively.

[0072] From the definition of FWH

one can easily see that Step 240 provides:${s_{i} = {\sum\limits_{j \in \mathcal{I}_{i}^{(0)}}^{\quad}\quad {\ln {\rho_{j}}}}},{- {\sum\limits_{j \in \mathcal{I}_{i}^{(1)}}^{\quad}\quad {\ln {\rho_{j}}}}},{i = 0},\ldots \quad,{2^{m} - 1.}$

[0073] Noting that${s_{0} = {\sum\limits_{j = 0}^{n - 1}{\ln {\rho_{j}}}}},$

[0074] ln |_(j)|, the following is obtained:$t_{i}^{(0)} = {{\sum\limits_{j \in \mathcal{I}_{i}^{(0)}}^{\quad}\quad {\ln {\rho_{j}}\quad {and}\quad t_{i}^{(1)}}} = {\sum\limits_{j \in \mathcal{I}_{i}^{(1)}}^{\quad}\quad {\ln {{\rho_{j}}.}}}}$

[0075] From the definition of FWH_(F) ₂

[

₂ _(]) one can see that step 270 provides:${\delta_{i}^{(0)} = {{\sum\limits_{j \in \mathcal{I}_{i}^{(0)}}^{\quad}{\beta_{j}^{(0)}\quad {and}\quad \delta_{i}^{(1)}}} = {\sum\limits_{j \in \mathcal{I}_{i}^{(1)}}^{\quad}\beta_{j}^{(0)}}}},{i = 0},\ldots \quad,{2^{m} - 1.}$

[0076] Thus, δ_(j) ⁽⁰⁾ and δ_(j) ⁽¹⁾ provide signs of the productsπ_(jεI) _(i) ⁽⁰⁾ρ_(j) and π_(jεI) _(i) ⁽¹⁾ρ_(j), respectively.

[0077] Hence,${h_{i}^{(0)} = {{\prod\limits_{j \in \mathcal{I}_{i}^{(0)}}^{\quad}\quad {\rho_{j}\quad {and}\quad h_{i}^{(1)}}} = {\prod\limits_{j \in \mathcal{I}_{i}^{(1)}}^{\quad}\quad \rho_{j}}}},{i = 0},\ldots \quad,{2^{m} - 1}$

[0078] It can be seen that:$r_{j} = {{\sum\limits_{{\underset{\_}{c}}_{i} \in C_{j}^{(0)}}^{\quad}\left\lbrack {{\prod\limits_{l \in \mathcal{I}_{i}^{(0)}}^{\quad}\quad \rho_{l}} - \quad {\prod\limits_{l \in \mathcal{I}_{i}^{(1)}}^{\quad}\quad \rho_{l}}} \right\rbrack} + {\sum\limits_{{\underset{\_}{c}}_{i} \in C_{j}^{(1)}}^{\quad}{\left\lbrack {{\prod\limits_{l \in \mathcal{I}_{i}^{(1)}}^{\quad}\quad \rho_{l}} - \quad {\prod\limits_{l \in \mathcal{I}_{i}^{(0)}}^{\quad}\quad \rho_{l}}} \right\rbrack.}}}$

[0079] Taking into account the following equality:${q = {\sum\limits_{{\underset{\_}{c}}_{i} \in C}^{\quad}\left\lbrack {{\prod\limits_{j \in \mathcal{I}_{i}^{(0)}}^{\quad}\quad \rho_{j}} + \quad {\prod\limits_{j \in \mathcal{I}_{i}^{(1)}}^{\quad}\quad \rho_{j}}} \right\rbrack}},$

[0080] the following is obtained:$w_{j}^{(0)} = {{\sum\limits_{{\underset{\_}{c}}_{i} \in C_{j}^{(0)}}^{\quad}{\prod\limits_{l \in \mathcal{I}_{i}^{(0)}}^{\quad}\quad {\rho_{l}\quad {and}\quad w_{j}^{(1)}}}} = {\sum\limits_{{\underset{\_}{c}}_{i} \in C_{j}^{(1)}}^{\quad}{\prod\limits_{l \in \mathcal{I}_{i}^{(1)}}^{\quad}\quad {\rho_{l}.}}}}$

[0081] Finally,$z_{j} = {\frac{{A_{j}(0)} - {A_{j}(1)}}{{A_{j}(0)} + {A_{j}(1)}} = {\Pr\left( {c_{j} = {{0\left. \underset{\_}{y} \right)} - {\Pr\left( {c_{j} = {1{\left. \underset{\_}{y} \right).}}} \right.}}} \right.}}$

[0082] To examine the complexity of the algorithm, it is noted thatcomplexities of all steps except steps 240, 270, and 285 are linear, thesteps 240 and 270 require n log₂n summations of real numbers, and step270 requires 2n log₂n binary summations. Therefore, the overallcomplexity of the algorithm is proportional to n log₂n.

Map Decoding Algorithm for Hamming Codes, H_(m)

[0083] In the case of the Hamming code, H_(m), a vector (y₁, y₂, . . . ,y_(n)) is received from the channel. Using arguments similar to thosediscussed above, one can easily see that the following algorithmprovides a MAP decoding of the Hamming code and its complexity isproportional to n log₂n.

[0084] As shown in FIG. 3, the MAP decoding algorithm 300 initiallydefines ρ₀, the difference in the probability of receiving a binary zeroand binary one at the 0-th position, to a value of zero during step 305.Thereafter, the MAP decoding algorithm 300 computes the difference,ρ_(j), of the probabilities that transmitted symbol c_(j) was zero andone based on characteristics of the channel and conditioned on the j-thsymbol y; received from the channel, as follows:$\rho_{j} = {\frac{1\frac{\Pr\left( {y_{j}\left. 1 \right)} \right.}{\Pr\left( {y_{j}{0}} \right.}}{1 + \frac{\Pr\left( {y_{j}\left. 1 \right)} \right.}{\Pr\left( {y_{j}{0}} \right.}} = {\Pr\left( {c_{j} = {{0\left. y_{j} \right)} - {\Pr\left( {{c_{j} = {1\left. y_{j} \right)}},{j = 0},\ldots \quad,{n - 1.}} \right.}}} \right.}}$

[0085] Thereafter, the natural log of each ρ is computed during step 320to permit the efficient computation of the sum of logarithms ofprobabilities, as opposed to an equivalent product of probabilities, asfollows:

τ_(j)=ln |ρ_(j) |,j=0, . . . ,n−1;

[0086] Since the polarity (+/−) of each of the probability differencevalues, ρ, was masked by the absolute value employed during step 320,the following β values are computed during step 330 to maintain thepolarity information: $\beta_{j}^{0} = \left\{ {{{\begin{matrix}{0,} & {{{{if}\quad \rho_{j}} \geq 0},} \\{1,} & {{{{if}\quad \rho_{j}} < 0},}\end{matrix}\quad {and}\quad \beta_{j}^{(1)}} = 0},{j = 0},\ldots \quad,{n - 1.}} \right.$

[0087] The real vector Walsh-Hadamard transform is applied to the τ(magnitude) values during step 340 to find the sum of logs of ρ values,as follows:

(s ₀ s ₁ , . . . ,s _(n−1))=FWH

(τ ₀,τ₁, . . . ,τn−1).

[0088] The results of the real vector Walsh-Hadamard transform are thenprocessed during step 350 to compute:${t_{i}^{(1)} = \frac{s_{0} - s_{i}}{2}},{i = 0},\ldots \quad,{n - 1.}$

[0089] It is noted that the t_(i) ⁽⁰⁾ term used for the extended Hammingcode has been dropped because the Hamming code has only half the numberof codewords of the extended Hamming code.

[0090] The h_(i) ⁽⁰⁾ term that was used for the extended Hamming code isset to zero during step 355 (again, because the Hamming code has onlyhalf the number of codewords of the extended Hamming code). Since theexemplary MAP decoding algorithm 300 employs sums of logarithms ofprobabilities, as opposed to an equivalent product of probabilities,exponentiation is performed during step 360, to obtain the product of ρvalues for non-zero positions for all codewords, as follows:

h _(i) ⁽¹⁾ =e ^(t) ^(_(i)) ⁽¹⁾ ,i=0, . . . ,n−1.

[0091] Each h value is a product of the absolute value of ρ values withnon-zero entries for all codewords of first order Reed-Muller code. Atthis point, the MAP decoding algorithm 300 has products of absolutevalues. To prepare to reintroduce the polarity information and obtainthe δ_(j) values, a specially designed F₂[

]-vector Walsh-Hadamard transform is again applied during step 365 tothe β (polarity) values, as follows: ( δ 0 ( 0 ) , δ 1 ( 0 ) , …    , δn - 1 ( 0 ) , δ 1 ( 1 ) , …    , δ n - 1 ( 1 ) ) = FWH ℱ 2  [ 2 ]  (β 0 ( 0 ) , β 1 ( 0 ) , …    , β n - 1 ( 0 ) ; β 0 ( 1 ) , β 1 ( 1 ) ,…    , β n - 1 ( 1 ) ) .

[0092] The polarity of the probability difference values is thenreintroduced during step 370, as follows:$h_{i}^{(1)} = \left\{ {{{\begin{matrix}{h_{i}^{(1)},} & {{{{if}\quad \delta_{i}^{(1)}} = 0},} \\{h_{i}^{(1)},} & {{{{if}\quad \delta_{i}^{(1)}} = 1},}\end{matrix}i} = 0},\ldots \quad,{n - 1.}} \right.$

[0093] The second portion of the MAP decoding algorithm 300 (steps 375through 390) proceeds in the same manner as the corresponding steps ofthe MAP decoding algorithm 200, discussed above in conjunction with FIG.2.

[0094] It is to be understood that the embodiments and variations shownand described herein are merely illustrative of the principles of thisinvention and that various modifications may be implemented by thoseskilled in the art without departing from the scope and spirit of theinvention.

We claim:
 1. A method for decoding a received vector of corruptedsymbols encoded using a code set comprised of a plurality of binarycodewords, wherein each of said binary codewords has h positions,wherein each position can have a binary value of one or zero, saidmethod comprising the steps of: for each position, l, 0≦l≦n−1 of saidreceived vector, computing a difference, ρ_(l), of the respectiveprobability that the transmitted symbol had a binary value of one and abinary value of zero at position l; and determining, for each codewordof a dual code of said code set, a product of ρ_(l) values correspondingto non-zero positions of codewords of the dual code of said code setusing a real vector fast Walsh-Hadamard transform and a F₂[

]-vector fast Walsh-Hadamard transform.
 2. The method of claim 1,wherein said code set is a dual of a Reed-Muller code set.
 3. The methodof claim 1, wherein said code set is a dual of a code set that can berepresented as sparse matrices.
 4. The method of claim 1, wherein saidF₂[

]-vector fast Walsh-Hadamard transform (δ₀ ⁽⁰⁾, δ₁ ⁽⁰⁾, . . . , δ_(n−1)⁽⁰⁾; δ_(n−1) ^((0); δ) ₀ ⁽¹⁾, . . . , δ_(n−1) ⁽¹⁾)=FWH_(F) ₂ _([Z) ₂_(])(β₀ ⁽⁰⁾, β₁ ⁽⁰⁾, . . . , β_(n−1) ⁽⁰⁾; β₀ ^((1), β) ₁ ⁽¹⁾, . . . ,β_(n−1) ⁽¹⁾), further comprises the steps of (i) computing, for j from 0to n/2−1, δ_(j) ⁽⁰⁾=β_(2j) ⁽⁰⁾⊕β_(2j+1) ⁽⁰⁾; δ_(j) ^((1)=β) _(2j)^((1)⊕β) _(2j+1) ⁽¹⁾; δ_(n/2+j) ⁽⁰⁾=β_(2j) ^((0) ⊕β) _(2j+1) ⁽¹⁾; andδ_(n/2+j) ⁽⁰⁾=β_(2j) ^((1) ⊕β) _(2j+1) ⁽⁰⁾; and (ii) assigning β_(j)^((0)=δ) _(j) ⁽⁰⁾ and β_(j) ⁽¹⁾=δ_(j) ^((1), j=)0, . . . , n−1; where nis a length of said codewords, n=2^(m), β is a variable to maintainpolarity information and δ indicates whether a corresponding product ofρ_(l) values is positive or negative.
 5. A method for decoding areceived vector of corrupted symbols encoded using a code set comprisedof a plurality of codewords, wherein each of said binary codewords has npositions, wherein each position can have a binary value of one or zero,said method comprising the steps of: for each position, l, 0≦l≦n−1 ofsaid received vector, computing a difference, ρ_(l), of the respectiveprobability that the transmitted symbol had a binary value of one and abinary value of zero at position l; determining a product of ρ_(l)values corresponding to non-zero positions of codewords of a dual codeof said code set; and for each position, l, of each codeword of a dualcode of said code set, determining a sum of modified products of saidρ_(l) values using a real vector fast Walsh-Hadamard transform, said sumof modified products of said ρ_(l) values indicating a most probablevalue of a transmitted symbol.
 6. The method of claim 5, wherein saidcode set is a dual of a Reed-Muller code set.
 7. The method of claim 5,wherein said code set is a dual of a code set that can be represented assparse matrices.
 8. The method of claim 5, wherein said modifiedproducts is obtained for l-th position of each dual codeword by dividingby the ρ_(l) value if the dual codeword has a first binary value in l-thposition.
 9. The method of claim 5, wherein said modified products isobtained for l-th position of each dual codeword by multiplying by theρ_(l) value if the dual codeword has a second binary value in l-thposition.
 10. The method of claim 5, wherein said first determining stepuses a real vector fast Walsh-Hadamard transform and a F₂[

]-vector fast Walsh-Hadamard transform.
 11. The method of claim 10,wherein said F₂[

]-vector fast Walsh-Hadamar transform (δ₀ ⁽⁰⁾, δ₁ ⁽⁰⁾, . . . , δ_(n−1)⁽⁰⁾; δ₀ ⁽¹⁾, δ₁ ⁽¹⁾, . . . , δ_(n−1) ^((1))=FWH) _(F) ₂ _([Z) ₂ _(])(β₀⁽⁰⁾, β₁ ⁽⁰⁾, . . . , β_(n−1) ⁽⁰⁾; β₀ ⁽¹⁾, β₁ ⁽¹⁾, . . . , β_(n−1) ⁽¹⁾),further comprises the steps of (i) computing, for j from 0 to n/2−1,δ_(j) ⁽⁰⁾=β_(2j) ⁽⁰⁾ ⊕β_(2j+1) ⁽⁰⁾; δ_(j) ⁽¹⁾=β_(2j) ^((1)⊕β) _(2j+1)⁽¹⁾; δ_(n/2+j) ⁽⁰⁾=β_(2j) ⁽⁰⁾⊕β_(2j+1) ⁽¹⁾; and δ_(n/2+j) ^((0)=β) _(2j)⁽¹⁾⊕β_(2j+1) ⁽⁰⁾; and (ii) assigning β_(j) ⁽⁰⁾=δ_(j) ⁽⁰⁾ and β_(j)⁽¹⁾=δ_(j) ^((1), j=)0, . . . , n−1; where n is a length of saidcodewords, n=2^(m), β is a variable to maintain polarity information andδ indicates whether a corresponding product of ρ_(l) values is positiveor negative.
 12. A system for decoding a received vector of corruptedsymbols encoded using a code set comprised of a plurality of codewords,wherein each of said binary codewords has n positions, wherein eachposition can have a binary value of one or zero, said system comprising:a memory that stores computer-readable code; and a processor operativelycoupled to said memory, said processor configured to implement saidcomputer-readable code, said computer-readable code configured to: foreach position, l, 0≦l≦n−1 of said received vector, compute a difference,ρ_(l), of the respective probability that the transmitted symbol had abinary value of one and a binary value of zero at position l; anddetermine, for each codeword of a dual code of said code set, a productof ρ_(l) values corresponding to non-zero positions of codewords of thedual code of said code set using a real vector fast Walsh-Hadamardtransform and a F₂[

]-vector fast Walsh-Hadamard transform.
 13. The system of claim 12,wherein said F₂[

]-vector fast Walsh-Hadamard transform (δ₀ ⁽⁰⁾, δ₁ ⁽⁰⁾, . . . , δ_(n−1)⁽⁰⁾; δ₀ ⁽¹⁾, δ₁ ⁽¹⁾, . . . , δ_(n−1) ^((1)=FWH) _(F) ₂ _([Z) ₂ _(])(β₀⁽⁰⁾, β₁ ⁽⁰⁾, . . . , β_(n−1) ⁽⁰⁾, β₀ ⁽¹⁾, β₁ ⁽¹⁾, . . . , β_(n−1) ⁽¹⁾),further comprises the steps of (i) computing, for j from 0 to n/2−1,δ_(j) ⁽⁰⁾=β_(2j) ⁽⁰⁾⊕β_(2j+1) ⁽⁰⁾; δ_(j) ⁽¹⁾=β_(2j) ⁽¹⁾⊕β_(2j+1) ⁽¹⁾;δ_(n/2+j) ⁽⁰⁾=β_(2j) ⁽⁰⁾⊕β_(2j+1) ⁽¹⁾; and δ_(n/2+j) ^((0)=β) _(2j)⁽¹⁾⊕β_(2j+1) ⁽⁰⁾⊕β_(2j+1) ⁽⁰⁾; and (ii) assigning β_(j) ⁽⁰⁾=δ_(j) ⁽⁰⁾and β_(j) ⁽¹⁾=δ_(j) ⁽¹⁾, j=0, . . . , n−1; where n is a length of saidcodewords, n=2^(m), β is a variable to maintain polarity information and6 indicates whether a corresponding product of ρ_(l) values is positiveor negative.
 14. A system for decoding a received vector of corruptedsymbols encoded using a code set comprised of a plurality of codewords,wherein each of said binary codewords has l positions, wherein eachposition can have a binary value of one or zero, said system comprising:a memory that stores computer-readable code; and a processor operativelycoupled to said memory, said processor configured to implement saidcomputer-readable code, said computer-readable code configured to: foreach position, l, of said received vector, compute a difference, ρ_(l),of the respective probability that the transmitted symbol had a binaryvalue of one and a binary value of zero at position l; determine aproduct of ρ_(l) values corresponding to non-zero positions of codewordsof a dual code of said code set; and for each position, l, of eachcodeword of a dual code of said code set, determine a sum of modifiedproducts of said ρ_(l) values using a real vector fast Walsh-Hadamardtransform, said sum of modified products of said p, values indicating amost probable value of a transmitted symbol.
 15. The system of claim 14,wherein said modified products is obtained for a given position of eachdual codeword by dividing by the ρ_(l) value for the current position ifthe dual codeword has a first binary value in the l-th. The method ofclaim 5, wherein said code set is a dual of a Reed-Muller code set. 16.The system of claim 15, wherein said modified products is obtained for al-th position of each dual codeword by multiplying by the ρ_(l) valuefor if the dual codeword has a second binary value in the l-th position.17. The system of claim 14, wherein said determining step uses a realvector fast Walsh-Hadamard transform and a F₂ [

-vector fast Walsh-Hadamard transform.
 18. The system of claim 17,wherein said F₂[

]-vector fast Walsh-Hadamard transform (δ₀ ⁽⁰⁾, δ₁ ⁽⁰⁾, . . . , δ_(n−1)⁽⁰⁾; δ₀ ⁽¹⁾, δ₁ ⁽¹⁾, . . . , δ_(n−1) ⁽¹⁾)=FWH_(F) ₂ _([Z) ₂ _(])(β₀ ⁽⁰⁾,β₁ ⁽⁰⁾, . . . , β_(n−1) ⁽⁰⁾; β₀ ⁽¹⁾, β₁ ⁽¹⁾, . . . , β_(n−1) ⁽¹⁾),further comprises the steps of (i) computing, for j from 0 to n/2−1,δ_(j) ^((0)=β) _(2j) ⁽⁰⁾⊕β_(2j+1) ⁽⁰⁾; δ_(j) ⁽¹⁾=β_(2j) ⁽¹⁾⊕β_(2j+1)⁽¹⁾; δ_(n/2+j) ⁽⁰⁾=β_(2j) ⁽⁰⁾⊕β_(2j+1) ⁽¹⁾; and δ_(n/2+j) ⁽⁰⁾=β_(2j)⁽¹⁾⊕β_(2j+1) ⁽⁰⁾; and (ii) assigning β_(j) ⁽⁰⁾=δ_(j) ⁽⁰⁾ and β_(j)⁽¹⁾=δ_(j) ⁽¹⁾, j=0, . . . , n−1; where n is a length of said codewords,n=2^(m), β is a variable to maintain polarity information and δ indicatewhether a corresponding product of ρ_(l) values is positive or negative.